//package com.plian.system.service.fr.vehicle.impl;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.plian.Tools.CollectionUtil;
//import com.plian.system.constant.sys.FormTypeConstant;
//import com.plian.system.dto.fr.vehicle.VehicleReportStatisticsDTO;
//import com.plian.system.dto.fr.vehicle.VehicleReportSummaryDTO;
//import com.plian.system.entity.fr.vehicle.VehicleInfo;
//import com.plian.system.enumeratea.CarInfoStatus;
//import com.plian.system.mapper.fr.vehicle.VehicleInfoMapper;
//import com.plian.system.mybatis.base.BaseServiceImpl;
//import com.plian.system.service.fr.vehicle.IVehicleReportService;
//import com.plian.system.vo.fr.vehicle.ApprovalSummaryVO;
//import com.plian.system.vo.fr.vehicle.InventoryStatisticsVO;
//import com.plian.system.vo.fr.vehicle.VehicleInfoVO;
//import com.plian.system.vo.report.HeaderVO;
//import com.plian.system.vo.report.ReportReturnVO;
//import com.plian.system.vo.report.ReportVO;
//import com.plian.system.wrapper.fr.veihicle.VehicleInfoWrapper;
//import lombok.AllArgsConstructor;
//import org.springframework.stereotype.Service;
//
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Optional;
//import java.util.stream.Collectors;
//
//
//@Service
//@AllArgsConstructor
//public class VehicleReportServiceImpl extends BaseServiceImpl<VehicleInfoMapper, VehicleInfo> implements IVehicleReportService {
//
//    private VehicleInfoWrapper vehicleInfoWrapper;
//
//    @Override
//    public ReportReturnVO summaryReport(VehicleReportSummaryDTO dto){
//        List<String> orgIds = dto.getOrgIds();
//        String disposalMethod = dto.getDisposalMethod();
//        List<ApprovalSummaryVO> approvalSummaryVOS = new ArrayList<>();
//        List<Long> ids = list(new LambdaQueryWrapper<VehicleInfo>().eq(Optional.ofNullable(disposalMethod).isPresent(),VehicleInfo::getDisposalMethod, disposalMethod)).stream().map(VehicleInfo::getId).collect(Collectors.toList());
//        List<VehicleInfo> items = list(new LambdaQueryWrapper<VehicleInfo>().eq(VehicleInfo::getStatus, 3).in(VehicleInfo::getCompanyId, orgIds)
//                .in(CollectionUtil.isNotEmpty(ids), VehicleInfo::getDisposalVehicleId, ids)
//        );
//
//        int index = 1;
//       if (CollectionUtil.isNotEmpty(items)){
//           for(VehicleInfo v :items){
//               VehicleInfoVO vo = vehicleInfoWrapper.entityToVO(v);
//               ApprovalSummaryVO asVO = new ApprovalSummaryVO();
//               asVO.setSerialNumber(index);
//               index ++;
//               asVO.setFillingUnitId(vo.getFillingUnitName());
//               if(Optional.ofNullable(v.getFormType()).isPresent() && v.getFormType().equals(String.valueOf(FormTypeConstant.FR_VEHICLE_INFO))){
//                   asVO.setFormType("新购");
//               }else if( v.getFormType().equals(String.valueOf(FormTypeConstant.FR_VEHICLE_UPDATE))){
//                   asVO.setFormType("更新");
//               }
//               VehicleInfo old = getById(v.getDisposalVehicleId());
//               VehicleInfoVO oldVO = vehicleInfoWrapper.entityToVO(old);
//               if(Optional.ofNullable(oldVO).isPresent()){
//                   asVO.setOldCarModelId(oldVO.getCarModelName());
//                   asVO.setOldDisposalMethod(oldVO.getDisposalMethodName());
//                   asVO.setDisposalDate(oldVO.getDisposalDate());
//                   asVO.setDisposalVehicleNumberPlate(oldVO.getNumberPlate());
//               }
//
//
//               /*if(Optional.ofNullable(vo.getDisposalVehicleId()).isPresent()) {
//                   asVO.setOldCarModelId(vo.getDisposalVehicleInfo().getCarModelName());
//                   asVO.setOldDisposalMethod(vo.getDisposalVehicleInfo().getDisposalMethodName());
//                   asVO.setDisposalVehicleNumberPlate(vo.getDisposalVehicleInfo().getNumberPlate());
//                   asVO.setDisposalDate(vo.getDisposalVehicleInfo().getDisposalDate());
//               }*/
//               /*asVO.setDisposalVehicleNumberPlate(v.getDisposalVehicleNumberPlate());
//               asVO.setDisposalDate(v.getDisposalDate());*/
//
//               asVO.setCarModelId(vo.getCarModelName());
//               asVO.setBareCarPrice(v.getBareCarPrice());
//               asVO.setCount(1);
//               asVO.setNumberPlate(v.getNumberPlate());
//               asVO.setDynamicType(vo.getDynamicTypeName());
//
//               asVO.setApprovalCode(v.getApprovalCode());
//               SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//               if(Optional.ofNullable(v.getApprovedTime()).isPresent()){
//                   String date = dateFormat.format(v.getApprovedTime());
//                   asVO.setApprovedTime(date.substring(0,4) + "/" + date.substring(5,7));
//               }
////               asVO.setApprovedTime(v.getApprovedTime());
//
//               approvalSummaryVOS.add(asVO);
//
//           }
//
//        }
//
//        ReportReturnVO reportReturnVO = new ReportReturnVO();
//        ReportVO reportVO = new ReportVO();
//
//        //原车信息
//        List<HeaderVO> oldInfo = new ArrayList<>();
//        oldInfo.add(HeaderVO.builder().key("OldCarModelId").title("原车车型").build());
//        oldInfo.add(HeaderVO.builder().key("disposalVehicleNumberPlate").title("原车号牌（行驶证）").build());
//        oldInfo.add(HeaderVO.builder().key("OldDisposalMethod").title("原车处置方式（报废/转让）").build());
//        oldInfo.add(HeaderVO.builder().key("disposalDate").title("原车处置日期（凭证）").build());
//
//        //新车信息
//        List<HeaderVO> newInfo = new ArrayList<>();
//        newInfo.add(HeaderVO.builder().key("carModelId").title("新车车型").build());
//        newInfo.add(HeaderVO.builder().key("bareCarPrice").title("审批裸车单价不超（万元）").build());
//        newInfo.add(HeaderVO.builder().key("count").title("数量").build());
//        newInfo.add(HeaderVO.builder().key("numberPlate").title("新车号牌（行驶证）").build());
//        newInfo.add(HeaderVO.builder().key("dynamicType").title("动力类型（燃油/新能源）").build());
//
//        reportVO
//                .addHeader(HeaderVO.builder().key("serialNumber").title("序号").build())
//                .addHeader(HeaderVO.builder().key("fillingUnitId").title("申请企业").build())
//                .addHeader(HeaderVO.builder().key("formType").title("新购/更新").build())
//                .addHeader(HeaderVO.builder().children(oldInfo).title("原车信息").build())
//                .addHeader(HeaderVO.builder().children(newInfo).title("新车信息").build())
//                .addHeader(HeaderVO.builder().key("approvalCode").title("国资委审批编号").build())
//                .addHeader(HeaderVO.builder().key("approvedTime").title("审批日期").build())
//                ;
//        reportVO.setData(approvalSummaryVOS);
//        reportReturnVO.setGrids(reportVO);
//
//        return reportReturnVO;
//    }
//
//    @Override
//    public ReportReturnVO inventorystatistics(VehicleReportStatisticsDTO dto){
//        List<String> orgIds = dto.getOrgIds();
//        String numberPlate = dto.getNumberPlate();
//        String  dynamicType = dto.getDynamicType();
//        List<InventoryStatisticsVO> inventoryStatisticsVOS = new ArrayList<>();
//        List<VehicleInfo> items = list(new LambdaQueryWrapper<VehicleInfo>().eq(VehicleInfo::getStatus, 3).eq(VehicleInfo::getCarStatus, CarInfoStatus.USING.getStatus()).in(VehicleInfo::getCompanyId, orgIds)
//                .like(Optional.ofNullable(numberPlate).isPresent(), VehicleInfo::getNumberPlate, numberPlate).eq(Optional.ofNullable(dynamicType).isPresent(), VehicleInfo::getDynamicType, dynamicType));
//        int index = 1;
//        if (CollectionUtil.isNotEmpty(items)){
//            for(VehicleInfo v :items){
//                VehicleInfoVO vo = vehicleInfoWrapper.entityToVO(v);
//                InventoryStatisticsVO isVO = new InventoryStatisticsVO();
//                isVO.setSerialNumber(index);
//                index ++;
//                isVO.setPurchaseCode(v.getApprovalCode());
//                isVO.setCompanyName(vo.getCompanyName());
//                isVO.setNumberPlate(v.getNumberPlate());
//                isVO.setBrand(v.getBrand());
//                isVO.setDynamicType(vo.getDynamicTypeName());
//                isVO.setExhaustVolume(v.getExhaustVolume());
//                isVO.setCarModelName(vo.getCarModelName());
//                isVO.setBareCarPrice(v.getBareCarPrice());
//                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//                if(Optional.ofNullable(v.getPurchaseDate()).isPresent()){
//                    String date = dateFormat.format(v.getPurchaseDate());
//                    isVO.setPurchaseDate(date.substring(0,4) + "/" + date.substring(5,7));
//                }
//
//
//                inventoryStatisticsVOS.add(isVO);
//
//            }
//
//        }
//
//        ReportReturnVO reportReturnVO = new ReportReturnVO();
//        ReportVO reportVO = new ReportVO();
//
//        reportVO
//                .addHeader(HeaderVO.builder().key("serialNumber").title("序号").build())
//                .addHeader(HeaderVO.builder().key("purchaseCode").title("购置审批编号").build())
//                .addHeader(HeaderVO.builder().key("companyName").title("所属单位").build())
//                .addHeader(HeaderVO.builder().key("numberPlate").title("车牌号").build())
//                .addHeader(HeaderVO.builder().key("brand").title("品牌、座数").build())
//                .addHeader(HeaderVO.builder().key("dynamicType").title("动力类型").build())
//                .addHeader(HeaderVO.builder().key("exhaustVolume").title("排气量").build())
//                .addHeader(HeaderVO.builder().key("carModelName").title("车型").build())
//                .addHeader(HeaderVO.builder().key("bareCarPrice").title("裸车单价").build())
//                .addHeader(HeaderVO.builder().key("purchaseDate").title("购置时间").build());
//        reportVO.setData(inventoryStatisticsVOS);
//        reportReturnVO.setGrids(reportVO);
//
//        return reportReturnVO;
//    }
//}
